package leetcode_core.leetcode_4;

/**
 * 功能描述
 *
 * @author: 张庭杰
 * @date: 2022年10月24日 15:19
 */
public class PartitionDisjoint {
    public int partitionDisjoint(int[] nums) {
        int n = nums.length;
        int[][] pre = new int[n+1][2];
        //pre[i][0]:是[0,i]的最大值
        //pre[i][1]:是[i,n-1]的最小值
        pre[0][0] = nums[0];
        pre[n-1][1] = nums[n-1];
        //枚举left数组
        for(int i = 1;i<=n-1;i++){
            pre[i][0] = Math.max(pre[i-1][0],nums[i]);
            if(i>=2){
                //就执行这个
                System.out.println(pre[n-i+1][1]+":"+nums[n-i]);
                pre[n-i][1] = Math.min(pre[n-i+1][1],nums[n-i]);
            }
        }
        //边界:n-i
        //i==n-1,此时j=n-(n-1)=n-n+1=1
        //还差个0
        pre[0][1] =Math.min(pre[1][1],nums[0]);
        //然后开始枚举分界点
        int left = Integer.MIN_VALUE;
        for(int i = 0;i<n-1;i++){
            //左边数组的最大值要小于等于右边数组的最小值
            System.out.println(pre[i][0]+" "+pre[i+1][1]);
            if(pre[i][0] <= pre[i+1][1]){
                //结算此时的i
                left = i;
            }
        }
        return left;
    }
}
